﻿#region Using

using System;
using Vk.Methods.Common;
using Vk.Methods.Photos;

#endregion

namespace Vk.Methods.Notes
{
    /// <summary>
    ///     Заметка
    /// </summary>
    public class Note : BaseEntity
    {
        /// <summary>
        ///     Количество комментариев
        /// </summary>
        public int? CommentsCount { get; set; }

        /// <summary>
        ///     Дата создания заметки
        /// </summary>
        public DateTime? Date { get; set; }

        /// <summary>
        ///     Количество прочитанных комментариев (только при запросе информации о заметке текущего пользователя
        /// </summary>
        public int? ReadCommentsCount { get; set; }

        /// <summary>
        ///     Текст заметки
        /// </summary>
        public string Text { get; set; }

        /// <summary>
        ///     Заголовок заметки
        /// </summary>
        public string Title { get; set; }

        /// <summary>
        ///     Адрес страницы для отображения заметки.
        /// </summary>
        public string Url { get; set; }

        public Note(ApiNode node)
        {
            Id = node.Int("id");
            OwnerId = node.Int("owner_id");
            Title = node.String("title");
            Text = node.String("text");
            Date = node.DateTime("date");
            CommentsCount = node.Int("comments");
            ReadCommentsCount = node.Int("read_comments");
            Url = node.String("view_url");
        }
    }

    /// <summary>
    ///     Расширенная заметка
    /// </summary>
    public class NoteExtended : Note
    {
        /// <summary>
        ///     Уровень доступа к комментированию заметки
        /// </summary>
        public AccessPrivacy? CommentPrivacy;

        /// <summary>
        ///     Уровень доступа к заметке
        /// </summary>
        public AccessPrivacy? Privacy;

        /// <summary>
        ///     Может ли текущий пользователь комментировать заметку
        /// </summary>
        public bool? CanComment { get; set; }

        /// <summary>
        ///     Вики-представление заметки
        /// </summary>
        public string TextWiki { get; set; }

        public NoteExtended(ApiNode node) : base(node)
        {
            TextWiki = node.String("text_wiki");
            Privacy = (AccessPrivacy?) node.Int("privacy");
            CommentPrivacy = (AccessPrivacy?) node.Int("comment_privacy");

            CanComment = node.Bool("can_comment");
        }
    }
}